package Controladores;

import Controladores.exceptions.NonexistentEntityException;
import Entidades.Detallerecepcion;

import Entidades.Estadoespera;
import Entidades.Operario;

import Entidades.Producto;
import Entidades.Transporte;
//import Entidades.FachadaPedido;
//import Entidades.Pedidos;
import Expertos.ExpertoPedido;
import java.sql.SQLException;
import java.util.List;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class ControlPedido {

    public ControlPedido() {
    }

    public void actualizarDetalleRecepcion(Detallerecepcion t) throws NonexistentEntityException, Exception {
        ExpertoPedido p = new ExpertoPedido();
        p.actualizarDetalleRecepcion(t);
    }

//    public void actualizarDetallerecepcion(Estadoespera t) {
//         ExpertoPedido p = new ExpertoPedido();
//        p.actualizarDetalleRecepcion(t);
//    }
//    public void actualizarTransporte(Transporte t) {
//        ExpertoPedido p = new ExpertoPedido();
//        p.actualizarTransporte(t);
//    }
//    public List<Detallerecepcion> buscarDetalleRecepcion() {
//
//        ExpertoPedido p2 = new ExpertoPedido();
//        return p2.buscarDetalleRecepcion();
//    }
    public List<Estadoespera> buscarEstadoEspera() {

        ExpertoPedido p2 = new ExpertoPedido();
        return p2.buscarEstadoEspera();
    }

    /*   public boolean verificarPedido(String nomProv, String est, String nomProd, String cant, String fPedido) {
    
    nombreProv = nomProv;
    estado = est;
    nombreProd = nomProd;
    cantidad = cant;
    fechaPedido = fPedido;
    
    if(nombreProv.equals("")){
    setErrorSalida("Debe ingresar el Nombre del proveedor");
    return false;
    }else{
    return true;
    }
    
    }*/
//    public Iterator buscarProveedores() {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarProveedores();
//        return it;
//    }
//    public Iterator buscarContratosPendientes(String estado) {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarContratosPendientes(estado);
//        return it;
//    }
//    public Iterator buscarTransporte() {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarTransporte();
//        return it;
//    }
//    public Iterator buscarProveedoresCondicion(String estado) {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarProveedoresCondicion(estado);
//        return it;
//    }
    public List<Transporte> buscarTransportes() {

        ExpertoPedido p2 = new ExpertoPedido();
        return p2.buscarTransportes();
    }

//    public Iterator buscarTransportistas() {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarTransportistas();
//        return it;
//    }
    public List<Producto> buscarProductos() {
        List<Producto> productos;
        ExpertoPedido p2 = new ExpertoPedido();
        return p2.buscarProductos();
    }

//    public Iterator buscarRemitos() {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarRemitos();
//        return it;
//    }
//
//    public Iterator buscarContratos() {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarContratos();
//        return it;
//    }
//
//    public Condicion guardar(Condicion c) {
//        ExpertoPedido p = new ExpertoPedido();
//        Condicion cc = new Condicion();
//        return cc = p.guardar(c);
//    }
//    public void guardarCiu(Ciu c) {
//        ExpertoPedido p = new ExpertoPedido();
//         p.guardarCiu(c);
//    }
//
////    public void guardarPesaje(PesajeEntrada p) {
////     ExpertoPedido ep = new ExpertoPedido();
////     ep.guardarPesaje(p);
////
////    }
//
//    public Remito guardarRemito(Remito remito) {
//        ExpertoPedido p = new ExpertoPedido();
//        Remito r = new Remito();
//        r = p.guardarRemito(remito);
//        return r;
//    }
//    public void guardarDetalleRemito(Detalleremito detalle) {
//        ExpertoPedido p = new ExpertoPedido();
//        p.guardarDetalleRemito(detalle);
//    }
//
//    public Recepcion guardarRecepcion(Recepcion recepcion) {
//        ExpertoPedido p = new ExpertoPedido();
//        Recepcion r = new Recepcion();
//        r = p.guardarRecepcion(recepcion);
//        return r;
//    }
//
//    public Detallerecepcion guardarDetalleRecepcion(Detallerecepcion detalle) {
//        ExpertoPedido p = new ExpertoPedido();
//        Detallerecepcion d = new Detallerecepcion();
//        p.guardarDetalleRecepcion(detalle);
//        return d;
//    }
//    public void actualizarTara(Transporte transporte) {
//        ExpertoPedido p = new ExpertoPedido();
//        p.actualizarTara(transporte);
//    }
//
//    public Transporte buscarTransporte(String patente) {
//        ExpertoPedido p = new ExpertoPedido();
//        Transporte t = new Transporte();
//        t = p.buscarTransporte(patente);
//        return t;
//    }
//
//    public Proveedor buscarProveedor(String cuitProveedor) {
//        ExpertoPedido p = new ExpertoPedido();
//        Proveedor t = new Proveedor();
//        t = p.buscarProveedor(cuitProveedor);
//        return t;
//    }
//    public Iterator buscarPesajePendiente() {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarPesajePendientes();
//        return it;
//    }
    public List<Operario> buscarPersona() {

        ExpertoPedido p2 = new ExpertoPedido();
        return p2.buscarPersona();
    }

    public Estadoespera buscarEstadoEspera(String string) {
        ExpertoPedido p2 = new ExpertoPedido();
        return p2.buscarEstadoEspera(string);
    }

    public void crearReportes(String nombreReporte) throws InstantiationException, IllegalAccessException, SQLException, JRException {
        Connection conn = null;
        try {
            InputStream fix = this.getClass().getClassLoader().getResourceAsStream(nombreReporte);
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/pesaje", "root", "root");
            JasperPrint print = JasperFillManager.fillReport(fix, new HashMap(), conn);
            JasperViewer jv = new JasperViewer(print, false);
            jv.setVisible(true);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {
                }
            }
        }
    }
//  public List<Producto> buscarProductos(String variedad, String clasificacion) {
//        ExpertoPedido p2 = new ExpertoPedido();
//        return p2.buscarProductos(variedad,clasificacion);
    //   }
//    public Iterator buscarRol() {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarRol();
//        return it;
//    }
//
//    public boolean guardarContrato(Date fechacontrato, Operario persona, Proveedor proveed, String estado) {
//        boolean flag = true;
//        ExpertoPedido inver = new ExpertoPedido();
//        flag = inver.guardarContrato(fechacontrato, persona, proveed, estado);
//        return flag;
//    }
//    public boolean guardarDetalleContrato(int cantidad, float precio, Contrato contrato, String estado, Producto producto, int cuartel) {
//        boolean flag = true;
//        ExpertoPedido inver = new ExpertoPedido();
//        flag = inver.guardarDetalleContrato(cantidad, precio, contrato, estado, producto, cuartel);
//        return flag;
//    }
//
//    public void actualizarContrato(Contrato contrato) {
//        ExpertoPedido p = new ExpertoPedido();
//        p.actualizarContrato(contrato);
//    }
//
//    public Iterator buscarTransporteTransportista() {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarTransporteTransportista();
//
//        return it;
//    }
//    public Iterator buscarDetalleRemitos() {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarDetalleRemitos();
//
//        return it;
//    }
//
//    public Iterator buscarRecepcion() {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarRecepcion();
//
//        return it;
//    }
    /*  public Iterator buscarPesajePendiente() {
    Iterator it = null;
    ExpertoPedido p2 = new ExpertoPedido();
    it = p2.buscarPesajePendientes();
    return it;
    }
    
    public Iterator buscarContratos(){
    Iterator it = null;
    ExpertoPedido p2 = new ExpertoPedido();
    it = p2.buscarContratos();
    return it;
    }*/
//    public boolean guardarPesaje(Date fechaHoraPesajeEntrada, float pesoBruto, float pesoNeto, float tara, Operario persona, Date fechaHoraPesajeSalida, Detallerecepcion idDetalleRecepcion, int pesajeAutomaticoEntrada, int pesajeAutomaticoSalida) {
//        boolean flag = true;
//        ExpertoPedido inver = new ExpertoPedido();
//        flag = inver.guardarPesaje(fechaHoraPesajeEntrada, pesoBruto, pesoNeto, tara, persona, fechaHoraPesajeSalida, idDetalleRecepcion, pesajeAutomaticoEntrada, pesajeAutomaticoSalida);
//        return flag;
//    }
//    public void actualizarPesaje(PesajeEntrada pesaje) {
//        ExpertoPedido p = new ExpertoPedido();
//        p.actualizarPesaje(pesaje);
//    }
//    public Iterator buscarPesaje() {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarPesaje();
//
//        return it;
//    }
//
//    public Iterator buscarDetalleContrato() {
//        Iterator it = null;
//        ExpertoPedido p2 = new ExpertoPedido();
//        it = p2.buscarDetalleContrato();
//        return it;
//    }
//    public void actualizarDetalleContrato(Detallecontrato detcontrato){
//        ExpertoPedido p = new ExpertoPedido();
//        p.actualizarDetalleContrato(detcontrato);
//    }
}
